1. Technical Field
The present invention relates generally to an improved data processing system and in particular to a method and apparatus for predicting how frequently a routine may be executed in a data processing system. Still more particularly, the present invention provides a method and apparatus for predicting how frequently a method may be executed in a data processing system by determining most recently used methods in the data processing system.
2. Description of Related Art
Java is an object oriented programming language and environment that is designed to solve a number of problems in modern programming practice. Java is able to support applications for many types of data processing systems, which may contain a variety of central processing units and operating systems architectures. To enable a Java application to execute on different types of data processing systems, a compiler typically generates an architecture--neutral file format--the compiled code is executable on many processors, given the presence of the Java run time system. The Java compiler generates bytecode instructions that are non-specific to a particular computer architecture. A bytecode is a machine independent code generated by the Java compiler and executed by a Java interpreter. A Java interpreter is a module that alternatively decodes and executes a bytecode or bytecodes. These bytecode instructions are designed to be easy to interpret on any machine and easily translated on the fly into native machine code.
Selective just in time (JIT) compilation is a recent and important development in Java. Tremendous storage savings can be achieved by compiling only the most frequently executed methods. Additionally, compile time is not wasted on infrequently executed methods. For example, there are many Java methods that are executed only once if at all in a given session and it would take much more time to compile and run all of these than to just interpret them. With JIT compilation, however, one issue that remains is selecting a process for determining which methods are frequently executed methods. In addition, it would be desirable to determine which methods are frequently and recently executed methods.
Therefore, it would be advantageous to have an improved method and apparatus for identifying the most frequently recently executed methods.